package main

import (
	"fmt"
	"time"
)

func printSlice(s []int) {
	// 打印出数组的长度 容量 值 类型
	fmt.Printf("len=%d cap=%d v=%v T=%T \n", len(s), cap(s), s, s)
}

func main() {
	// now := time.Now().Second() //获取当前时间的秒
	now := time.Now()
	nowtime := time.Now().Unix()
	a := 12
	var p *int = &a

	fmt.Println(now.Format("2006-01-02 15:04:05")) // 格式化日期输出；后面这个时间必须为这个时间
	fmt.Println(now.Format("2006/01/02 15:04:05")) // 后面这个时间必须为这个时间
	fmt.Println(nowtime)                           // 获取当前的时间戳
	fmt.Println(a, p)                              // 直接输出指针的值 是一个地址
	*p = 88                                        // 这个意思就是改变地址的值，这样就会对应的更改原来变量的值
	fmt.Println(a, *p)                             // 输出指针地址指向的值 就是指针值(地址)指向的值
	var arr [2]string
	arr[0] = "hello"
	arr[1] = "world"
	fmt.Println(arr[0], arr[1])
	arr_num := []int{1, 2, 3, 4, 5, 6, 7}
	fmt.Println(arr_num[0:3])
	arr_num[3] = 12
	fmt.Println(arr_num)

	// 下面这个被成为切片文法 类似于没有长度的数组文法
	s := []struct {
		i int
		b bool
	}{
		{1, true},
		{2, false},
	}

	fmt.Println(s)
	printSlice(arr_num[:5])
	var q []int
	fmt.Println(q)
	// 空列表是nil
	if q == nil {
		fmt.Println("nil")
	}
}
